package coom;


import java.util.List;

import Bean.AchievementBean;
import Bean.AddOrderBean;
import Bean.AllyBean;
import Bean.AreaBean;
import Bean.ChangePasswordBean;
import Bean.ComplaintBean;
import Bean.EnterpriseassBean;
import Bean.FindAddressBean;
import Bean.ForwardBean;
import Bean.GetBankcardBean;
import Bean.HistoricalincomeBean;
import Bean.JiFenRecordBean;
import Bean.KnowledgeBean;
import Bean.LoginBean;
import Bean.MPOSBean;
import Bean.MessagecenterBean;
import Bean.ModifyPasswordBean;
import Bean.OrderBean;
import Bean.OrderDetailsNewBean;
import Bean.PresentRecordBean;
import Bean.ProductBean;
import Bean.RateLevelBean;
import Bean.RegisterBean;
import Bean.SendPhoneCodeBean;
import Bean.SetDefaultAddressBean;
import Bean.SiteAddressBean;
import Bean.TiXianBean;
import Bean.UpdateBean;
import base.BaseResp;
import base.BaseResp2;
import dao.GetUrlOutput;
import dao.MerchantTradeOutput;
import dao.TradeRecordOutput;
import model.PersonalCenterBean;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Query;
import retrofit2.http.Url;
import rx.Observable;
import ui.activity.poscontrol.beanmodel.ChangeBankSelectListBean;
import ui.activity.poscontrol.beanmodel.ChangebankDetail;
import ui.activity.poscontrol.beanmodel.ChangebankSearchDetail;
import ui.activity.poscontrol.beanmodel.MyPosBean;
import ui.activity.poscontrol.beanmodel.OrderSn;
import ui.activity.poscontrol.beanmodel.PosAuthRecordBean;
import ui.activity.poscontrol.beanmodel.PosInfoBean;
import ui.activity.poscontrol.beanmodel.PosMainBean;
import ui.activity.poscontrol.beanmodel.PushBackPeopleBean;
import ui.activity.poscontrol.beanmodel.PushBackPosBean;
import ui.activity.poscontrol.beanmodel.PushPeopleBean;
import ui.activity.poscontrol.beanmodel.PushPosBean;
import ui.activity.poscontrol.beanmodel.RedBallBean;
import ui.activity.poscontrol.beanmodel.RedBallnumBean;
import ui.activity.poscontrol.beanmodel.TiXianResultBean;
import ui.model.AccountMoneyInfo;
import ui.model.CreditCardsBean;
import ui.model.GetShareIamgeBean;
import ui.model.IntegralBean;
import ui.model.IntegralBuyResBean;
import ui.model.IntegralTotalBean;
import ui.model.ItemsInfo;
import ui.model.MessageReadBean;
import ui.model.NoticeInfo;
import ui.model.OnLineBean;
import ui.model.ProfitBean;
import ui.model.ProfitCrahBean;
import ui.model.ProfitDetailsBean;
import ui.model.ProfitExpandBean;
import ui.model.ProfitNewBean;
import ui.model.ProfitpromotionBean;
import ui.model.RankingBean;
import ui.model.ReardsGrowthBean;
import ui.model.RewardsBean;
import ui.model.RewardsChallengeBean;
import ui.model.RewardsDetailsBean;
import ui.model.RewardsListBean;
import ui.model.RewardsTrainTopBean;
import ui.model.SignBean;
import ui.model.TodyBean;
import ui.model.UploadImageBean;
import ui.model.WithDrawInfo;
import ui.model.WxBean;

/**
 * Created by chenjian on 16/6/12.
 * <p>
 * 1
 */
public interface ApiService {
    /**
     * test
     */
    @POST
    @FormUrlEncoded
    Observable<BaseResp<Object>> test(@Url String url);


    // *************************************************************************
    // TODO  控制器 Utils 工具


    /**
     * 获取验证码
     */
    @GET("api/Utils/SendShortMsgByTypeID")
    Observable<BaseResp<Object>> SendShortMsgByTypeID(@Query("phone") String mobile,
                                                      @Query("enumSmsType") String enumSmsType
    );


    // *************************************************************************
    // TODO  控制器 v1 当日收益

    /**
     * 获取当日收益
     */
    @GET("api/v1/trans_detail")
    Observable<BaseResp<ProfitBean>> trans_detail(@Query("customId") String customId,
                                                  @Query("strDate") String strDate
    );

    /**
     * 获取排行榜
     */
    @GET("api/v1/top_income")
    Observable<BaseResp<RankingBean>> top_income(@Query("type") String type,
                                                 @Query("strDate") String strDate
    );

    /**
     * 获取已签到数据
     */
    @GET("api/v1/sign")
    Observable<BaseResp<SignBean>> sign(@Query("customId") String customId,
                                        @Query("year") Integer year,
                                        @Query("month") Integer month
    );

    /**
     * 签到数据
     */
    @POST
    Observable<BaseResp<Object>> signIn(@Url String url
    );


    /**
     * 获取已签到数据
     */
    @GET("api/v1/integral")
    Observable<BaseResp<IntegralBean>> integral(@Query("customId") String customId
    );

    /**
     * 获取积分信息
     */
    @GET("api/v1/integralTotal")
    Observable<BaseResp<IntegralTotalBean>> integralTotal(@Query("customId") String customId
    );
    /**
     * 获取积分记录
     * customId   //用户ID
     * year       //查询年
     * month      //查询月
     * type       // 查询类型： 0：获取积分 1：使用积分
     */
    @GET("api/v1/integralRecords")
    Observable<BaseResp<JiFenRecordBean>> integralTotalRecord(@Query("customId") String customId,
                                                        @Query("year") String year,
                                                        @Query("month") String month,
                                                        @Query("type") String type
    );
    /**
     * 积分流转、
     *     "toId": 3, //流转到客户id
     *     "toName": "胡安国",  //流转至客户姓名
     *     "toPhone": "胡安国",  //流转至客户手机     -- 在toId有数据时，不使用toName 和 toPhone
     *     "jifen": 138  //流转积分数量
     */
    @POST("api/v1/jifen_flow/flow")
    Observable<BaseResp<Boolean>> flowliuzhuan(@Body RequestBody requestBody
    );


    /**
     * 获取积分记录
     * customId   //用户ID
     * year       //查询年
     * month      //查询月
     * type       // 查询类型： 0：获取积分 1：使用积分
     */
    @GET("api/v1/jifen_flow/flowRecords")
    Observable<BaseResp<JiFenRecordBean>> jifenrecord(
                                                              @Query("year") String year,
                                                              @Query("month") String month,
                                                              @Query("type") String type
    );
    /**
     * 查询发货地址
     */
    @GET("api/address/siteAddress")
    Observable<BaseResp<SiteAddressBean>> siteAddress();
    /**
     * 获取已签到数据
     */
    @POST("api/v1/integral/buyPos")
    Observable<BaseResp<IntegralBuyResBean>> integralBuy(@Body RequestBody requestBody
    );
    /**
     * 获取当日收益
     */
    @GET("api/v1/perform/detail")
    Observable<BaseResp<ProfitDetailsBean>> performDetail(@Query("customId") String customId,
                                                          @Query("strDate") String strDate
    );


    // *************************************************************************
    // TODO  控制器 客服  BaseResp2 不一样

    /**
     * 客服是否在线
     */
    @GET("service/v1/online")
    Observable<BaseResp2<OnLineBean>> online(
    );

    /**
     * 通知服务器收到消息
     */
    @GET
    Observable<BaseResp2<Boolean>> receiveMessage(@Url String url
    );


    /**
     * 通知服务器收到消息
     */
    @GET
    Observable<BaseResp2<List<MessageReadBean>>> unread(@Url String url
    );

    // *************************************************************************
    // TODO  控制器 客服  微信支付 不一样

    /**
     * 微信支付
     */
    @POST("api/wx/wxPay")
    Observable<BaseResp<WxBean>> wxPay(@Body RequestBody requestBody
    );
    // TODO 定向划拨

    /**
     * 定向划拨
     */
    @POST("api/pos/flow")
    Observable<BaseResp<Boolean>> directionalallocation(@Body RequestBody requestBody);

    // *************************************************************************
    // TODO  控制器 订单  订单列表

    /**
     * 获取订单列表
     */
    @POST("api/order/getOrderType")
    Observable<BaseResp<OrderBean.DataBean>> getOrderType(@Body RequestBody requestBody
    );

    /**
     * 取消订单
     */
    @POST("api/order/cancelOrder")
    Observable<BaseResp<Object>> cancelOrder(@Body RequestBody requestBody
    );

    /**
     * 确认收货
     */
    @POST("api/order/confirmOrder")
    Observable<BaseResp<Object>> confirmOrder(@Body RequestBody requestBody
    );

//    /**
//     * 获取订单详情
//     */
//    @POST("api/order/getOrderDetails")
//    Observable<BaseResp<OrderDetailsBean.DataBeanX>> getOrderDetails(@Body RequestBody requestBody
//    );

    /**
     * 新获取订单详情
     */
    @GET("api/order/v1/orderDetails")
    Observable<BaseResp<OrderDetailsNewBean>> getOrderDetails(@Query("orderId") String orderId
    );

    /**
     * 添加订单
     */
    @POST("api/order/addOrder")
    Observable<BaseResp<AddOrderBean.DataBean>> addOrder(@Body RequestBody requestBody
    );

    /**
     * 添加订单
     */
    @POST("api/order/materials")
    Observable<BaseResp<AddOrderBean.DataBean>> addOrdermaterials(@Body RequestBody requestBody
    );
    // *************************************************************************
    // TODO  控制器 收货地址  修改地址


    /**
     * 获取用户等级
     */
    @GET("api/trans/level")
    Observable<BaseResp<RateLevelBean>> getUserRate(@Query("customId") String customId
            , @Query("isNew") int isnew);

    /**
     * 自助报单
     */
    @POST("api/merchant/addSimplePOS")
    Observable<BaseResp<Object>> addSimplePOS(@Body RequestBody requestBody);

    /**
     * 获取自助报单的二维码图片
     */
    @POST("api/merchant/getOrganizationQrCode")
    Observable<BaseResp<GetShareIamgeBean>> GetShareIamgeBean(@Body RequestBody requestBody);


    /**
     * 团队列表
     */
    @POST("api/courseAlly/courseList")
    Observable<BaseResp<AllyBean.DataBean>> courseList(@Body RequestBody requestBody);

    // *************************************************************************
    // TODO  控制器 登录注册

    /**
     * 登录
     */
    @POST("api/login")
    Observable<BaseResp<LoginBean.DataBean>> login(@Body RequestBody requestBody
    );

    /**
     * 获取验证码
     */
    @POST("api/getRegMsgCode")
    Observable<BaseResp<SendPhoneCodeBean.DataBean>> getRegMsgCode(@Body RequestBody requestBody
    );

    /**
     * 注册
     */
    @POST("api/register")
    Observable<BaseResp<RegisterBean.DataBean>> register(@Body RequestBody requestBody
    );

    /**
     * 忘记密码获取验证码
     */
    @POST("api/getForgetPasswordMsgCode")
    Observable<BaseResp<SendPhoneCodeBean.DataBean>> getForgetPasswordMsgCode(@Body RequestBody requestBody
    );

    /**
     * 忘记密码
     */
    @POST("api/forgetPassdUpdatePassword")
    Observable<BaseResp<ModifyPasswordBean.DataBean>> forgetPassdUpdatePassword(@Body RequestBody requestBody
    );


    // *************************************************************************
    // TODO  控制器 首页改

    /**
     * 企业辅助
     */
    @POST("api/assistance/news")
    Observable<BaseResp<EnterpriseassBean.DataBean>> news(@Body RequestBody requestBody
    );

    /**
     * 机具申领
     */
    @POST("api/posModel/getPosModelList")
    Observable<BaseResp<MPOSBean>> getPosModelList(@Body RequestBody requestBody
    );

    /**
     * 商品详情
     */
    @POST("api/posModel/getPosModel")
    Observable<BaseResp<ProductBean.DataBean>> getPosModel(@Body RequestBody requestBody
    );

    /**
     * 知识讲堂
     */
    @POST("api/course/courseList")
    Observable<BaseResp<KnowledgeBean.DataBean>> knowledgeList(@Body RequestBody requestBody
    );

    /**
     * 活动专区
     */
    @POST("api/activity/activityList")
    Observable<BaseResp<AreaBean.DataBean>> activityList(@Body RequestBody requestBody
    );

    /**
     * 直接划拨
     */
    @POST("api/pos/flow")
    Observable<BaseResp<Object>> flowDevices(@Body RequestBody requestBody
    );

    /**
     * 回拨
     */
    @POST("api/backFlow/flow")
    Observable<BaseResp<Object>> backflowDevices(@Body RequestBody requestBody
    );

    /**
     * 确认回拨
     */
    @PUT("api/backFlow/confirm/1")
    Observable<BaseResp<Object>> backflowAllowDevices(@Body RequestBody requestBody
    );

    /**
     * 拒绝回拨
     */
    @PUT("api/backFlow/confirm/0")
    Observable<BaseResp<Object>> backflowDeAllowDevices(@Body RequestBody requestBody
    );
    // TODO  pos管理页面接口

    /**
     * 获取划拨规则
     */
    @POST("api/merchant/getRuleURL")
    Observable<BaseResp<GetUrlOutput>> getFlowRule(
    );

    /**
     * 获取pos管理首页的参数
     */
    @GET("api/instance/count")
    Observable<BaseResp<PosMainBean>> queryPosControlMainInfo(@Query("customerId") String customId
    );

    /**
     * 获取已划拨人的信息
     */
    @GET("api/instance/flow")
    Observable<BaseResp<List<PushPeopleBean>>> queryHasPushPeopleInfo(@Query("customerId") String customId
    );

    /**
     * 获取可回拨人的信息
     */
    @GET("api/instance/backFlow")
    Observable<BaseResp<List<PushBackPeopleBean>>> queryPushBackPeopleInfo(@Query("customerId") String customId

    );

    /**
     * 获取回拨历史记录人的信息
     */
    @GET("api/backFlow/his")
    Observable<BaseResp<List<PushBackPeopleBean>>> queryPushBackHistoryPeopleInfo(@Query("customerId") String customId,
                                                                                  @Query("type") int type

    );

    /**
     * 获取回拨历史记录设备的信息
     */
    @GET
    Observable<BaseResp<PushBackPosBean>> queryPushBackHistoryPosInfo(@Url String url
    );

    /**
     * 获取回拨记录人的信息
     * * type 0我发起的 1我接受的
     */
    @GET("api/backFlow/records")
    Observable<BaseResp<List<PushBackPeopleBean>>> queryPushBackRecordPeopleInfo(@Query("customerId") String customId,
                                                                                 @Query("type") int type
    );

    /**
     * 获取已划拨终端列表
     */
    @GET
    Observable<BaseResp<PushPosBean>> queryHasPushPosInfo(@Url String url
    );

    /**
     * 可回拨终端列表
     */
    @GET
    Observable<BaseResp<PushBackPosBean>> queryPushBackPosInfo(@Url String url
    );

    /**
     * 回拨记录终端列表
     */
    @GET
    Observable<BaseResp<PushBackPosBean>> queryPushBackRecordPosInfo(@Url String url
    );

    /**
     * 获取未激活设备列表
     */
    @GET("api/instance/list/unActive")
    Observable<BaseResp<MyPosBean>> queryMyNotActiveInfo(@Query("customerId") String customId,
                                                         @Query("current") int current,
                                                         @Query("size") int size,
                                                         @Query("descs") String desc,
                                                         @Query("ascs") String asc

    );

    /**
     * 获取未激活设备列表
     * activeStatus :2:审核中；3：审核失败；4：已开通；5：已激活；6：已达标；
     */
    @GET("api/instance/list")
    Observable<BaseResp<PosInfoBean>> queryPosInfo(@Query("customerId") String customId,
                                                   @Query("current") int current,
                                                   @Query("size") int size,
                                                   @Query("activeStatus") int activeStatus

    );

    /**
     * 当日收益上方四个值
     */
    @GET("api/v1/transAgg")
    Observable<BaseResp<ProfitNewBean>> queryTodayMoneyInfo(@Query("year") int year,
                                                            @Query("month") int month,
                                                            @Query("day") int day

    );

    /**
     * 激活奖励
     */
    @GET("api/v1/trans/cash")
    Observable<BaseResp<ProfitCrahBean>> queryTodayMoneycash(@Query("year") int year,
                                                             @Query("month") int month,
                                                             @Query("day") int day,
                                                             @Query("current") int current,
                                                             @Query("size") int size

    );

    /**
     * 扩展奖励
     */
    @GET("api/v1/trans/expand")
    Observable<BaseResp<ProfitExpandBean>> queryTodayMoneyexpand(@Query("year") int year,
                                                                 @Query("month") int month,
                                                                 @Query("day") int day,
                                                                 @Query("current") int current,
                                                                 @Query("size") int size

    );

    /**
     * 推广奖励
     */
    @GET("api/v1/trans/promotion")
    Observable<BaseResp<ProfitpromotionBean>> queryTodayMoneypromotion(@Query("year") int year,
                                                                       @Query("month") int month,
                                                                       @Query("day") int day,
                                                                       @Query("current") int current,
                                                                       @Query("size") int size

    );

    /**
     * 自助报单历史记录
     */
    @GET("api/merchant/customer/list")
    Observable<BaseResp<PosAuthRecordBean>> queryPosAuthRecord(@Query("current") int current,
                                                               @Query("size") int size

    );
    // *************************************************************************
    // TODO  控制器 个人中心改

    /**
     * 消息列表
     */
    @POST("api/notifyRecord/getMessageList")
    Observable<BaseResp<MessagecenterBean.DataBean>> getMessageList(@Body RequestBody requestBody
    );

    /**
     * 获取个人信息
     */
    @POST("api/custom/settlementIncome")
    Observable<BaseResp<PersonalCenterBean.DataBean>> settlementIncome(@Body RequestBody requestBody
    );

    /**
     * 获取提现列表
     */
    @POST("api/getMoney/record")
    Observable<BaseResp<PresentRecordBean>> getMoneyRecord(@Body RequestBody requestBody
    );

    /**
     * 修改密码
     */
    @POST("api/updatePassword")
    Observable<BaseResp<ChangePasswordBean.DataBean>> updatePassword(@Body RequestBody requestBody
    );

    /**
     * 投诉建议
     */
    @POST("api/complaint/addComplaint")
    Observable<BaseResp<ComplaintBean.DataBean>> addComplaint(@Body RequestBody requestBody
    );

    /**
     * 获取银行卡列表
     */
    @GET("api/getMoney/card")
    Observable<BaseResp<GetBankcardBean.DataBean>> cardList(
    );

    /**
     * 删除银行卡
     */
    @DELETE
    Observable<BaseResp<Object>> delcar(@Url String url
    );

    /**
     * 修改默认银行卡
     */
    @PUT
    Observable<BaseResp<Object>> changeBankCard(@Url String url
    );

    /**
     * 申请提现
     */
    @POST("api/getMoney/applyMoney")
    Observable<BaseResp<ForwardBean.DataBean>> applyMoney(@Body RequestBody requestBody
    );

    /**
     * 上传头像
     */
    @POST("api/uploadHeadImg")
    Observable<BaseResp<UploadImageBean>> uploadHeadImg(@Body RequestBody requestBody
    );

    /**
     * 获取收货地址
     */
    @POST("api/address/findAddressBuCustomId")
    Observable<BaseResp<FindAddressBean.DataBean>> findAddressBuCustomId(@Body RequestBody requestBody
    );

    /**
     * 设置默认地址
     */
    @POST("api/address/defaultaddress")
    Observable<BaseResp<SetDefaultAddressBean.DataBean>> defaultaddress(@Body RequestBody requestBody
    );

    /**
     * 删除地址
     */
    @POST("api/address/deleltAddress")
    Observable<BaseResp<Object>> deleltAddress(@Body RequestBody requestBody
    );

    /**
     * 新增地址
     */
    @POST("api/address/addAddress")
    Observable<BaseResp<Object>> addAddress(@Body RequestBody requestBody
    );

    /**
     * 修改收货地址
     */
    @POST("api/address/updateAddress")
    Observable<BaseResp<Object>> updateAddress(@Body RequestBody requestBody
    );


    // *************************************************************************
    // TODO  控制器 资金收益改

    /**
     * 获取历史收益
     */
    @POST("api/myEarnings/history")
    Observable<BaseResp<HistoricalincomeBean.DataBean>> historyIncome(@Body RequestBody requestBody
    );


    /**
     * 首页业绩
     */
    @GET("api/custom/v1/performance")
    Observable<BaseResp<AchievementBean.DataBean>> performance(@Query("year") String year,
                                                               @Query("month") String month
    );

    /**
     * 首页业绩h团队 商户
     */
    @GET("api/custom/v1/performance/agg")
    Observable<BaseResp<AchievementBean.DataBean>> performanceNumber(
    );

    /**
     * 交易明细
     */
    @POST("api/tradeDetail/merchantList")
    Observable<BaseResp<TradeRecordOutput>> merchantList(@Body RequestBody requestBody
    );

    /**
     * 交易明细详情
     */
    @POST("api/tradeDetail/tradeDetailList")
    Observable<BaseResp<MerchantTradeOutput>> tradeDetailList(@Body RequestBody requestBody
    );

    /**
     * 日交易明细详情
     */
    @POST("api/tradeDetail/tradeDetailListByDay")
    Observable<BaseResp<MerchantTradeOutput>> tradeDetailListByDay(@Body RequestBody requestBody
    );

    /**
     * 获取个人余额
     */
    @GET("api/custom/account")
    Observable<BaseResp<ItemsInfo<AccountMoneyInfo>>> accountInfo(
    );

    /**
     * 同一获取验证码  不含参数
     */
    @GET("api/validate/mobile/confirm")
    Observable<BaseResp<Object>> getCode(
    );

    /**
     * 同一获取验证码  含电话参数
     */
    @GET("api/validate/mobile/confirm")
    Observable<BaseResp<Object>> getPhoneCode(@Query("phone") String phone
    );

    /**
     * 余额支付获取验证码
     */
    @POST("api/balance/pay")
    Observable<BaseResp<Object>> balancePay(@Body RequestBody requestBody
    );

    /**
     * 新的提现接口
     */
    @POST("api/wallet/v2/withdraw/divided")
    Observable<BaseResp<List<TiXianResultBean>>> applyMoneyNew(@Body RequestBody requestBody
    );


    /**
     * 订单详情设备列表
     */
    @GET
    Observable<BaseResp<List<OrderSn>>> getOrderSn(@Url String url
    );

    /**
     * 获取首页新闻通知
     */
    @GET("api/system/notice")
    Observable<BaseResp<NoticeInfo>> notice(
    );

    /**
     * 查看是否设置支付密码
     */
    @GET("api/wallet/payPass")
    Observable<BaseResp<Boolean>> payPassWord(
    );


    /**
     * 设置支付密码
     */
    @POST("api/wallet/payPass")
    Observable<BaseResp<Boolean>> setPassWord(@Body RequestBody requestBody
    );


    /**
     * 单独验证用户密码
     */
    @POST("api/info/auth")
    Observable<BaseResp<Boolean>> authPwd(@Body RequestBody requestBody
    );

    /**
     * 设置新的手机号码
     */
    @PUT("api/info/changePhone")
    Observable<BaseResp<Boolean>> changePhone(@Body RequestBody requestBody
    );


    /**
     * 获取提现提示
     */
    @GET("api/wallet/withdraw/info")
    Observable<BaseResp<WithDrawInfo>> withDrawInfo(
    );

    // *************************************************************************
    // TODO  控制器 信用卡列表

    /**
     * 信用卡列表
     */
    @GET
    Observable<BaseResp<List<CreditCardsBean>>> creditCardList(@Url String url
    );

    /**
     * 信用卡列表
     */
    @GET("api/revision/list")
    Observable<BaseResp<List<CreditCardsBean>>> revisionList(
    );


    // TODO 设置返现金额相关接口

    /**
     * 获取调整返现页面数据
     */
    @GET
    Observable<BaseResp<ChangebankDetail>> getChangeBackDetails(@Url String url
    );

    /**
     * 申请重设返现金额
     */
    @PUT("api/flow/reset/amount")
    Observable<BaseResp<Boolean>> submitChangeBack(@Body RequestBody requestBody
    );

    /**
     * 查询返现记录列表
     */
    @GET("api/flow/reset/page")
    Observable<BaseResp<ChangeBankSelectListBean>> getChangeBackList(@Query("sign") int sign,
                                                                     @Query("current") int current,
                                                                     @Query("size") int size
    );

    /**
     * 查看返现记录详情
     */
    @GET
    Observable<BaseResp<ChangebankSearchDetail>> getChangeBackRecordDetails(@Url String url
    );

    /**
     * 查看返现记录详情
     */
    @PUT
    Observable<BaseResp<Boolean>> submitRecordDetail(@Url String url
    );

    // TODO 卡券相关接口

    /**
     * 查询红包列表
     */
    @GET("api/tickets/page")
    Observable<BaseResp<RedBallBean>> getRedballList(@Query("status") int sign,
                                                     @Query("current") int current,
                                                     @Query("size") int size
    );

    /**
     * 查看红包数量
     */
    @GET
    Observable<BaseResp<RedBallnumBean>> getRedballNum(@Url String url
    );

    /**
     * 查看可用红包
     */
    @GET
    Observable<BaseResp<RedBallBean>> getCanUseRedball(@Url String url
    );

    /**
     * 查看返现记录详情
     */
    @POST("api/share")
    Observable<BaseResp<String>> share(@Body RequestBody requestBody
    );

    /**
     * 获取当日收益循环送数量
     */
    @GET("api/reward/today")
    Observable<BaseResp<List<TodyBean>>> gettody();

    // *************************************************************************
    // TODO  控制器 新的物料 机器列表

    /**
     * POS机或者物料列表
     */
    @GET
    Observable<BaseResp<MPOSBean>> getModelListUrl(@Url String url
    );

    /**
     * 获取当日收益循环送数量
     */
    @GET("api/wallet/strategy")
    Observable<BaseResp<TiXianBean>> getuserTixiantype();

    /**
     * 友盟上传用户id到后台
     */
    @POST("api/push/token")
    Observable<BaseResp<Boolean>> putUmToken(
//            @Query("customId") String customId,
//                                             @Query("token") String token,
//                                             @Query("terminal") String terminal
            @Body RequestBody requestBody
    );

    /**
     * 登出
     */
    @DELETE("api/logout")
    Observable<BaseResp<String>> logout(
    );

    /**
     * 版本更新
     */
    @GET
    Observable<BaseResp<UpdateBean>> UpdateVersion(@Url String url
    );


    /**
     * 获取费率
     */
    @GET("content/rate")
    Observable<BaseResp<List<String>>> getRate();


    /**
     * 新钱包奖励
     */
    @GET("api/ls-reward-all/poly")
    Observable<BaseResp<List<RewardsBean>>> rewards();


    /**
     * 新钱包奖励列表
     */
    @GET("api/ls-reward-month/page")
    Observable<BaseResp<RewardsListBean>> rewardsList(@Query("type") int type,
                                                      @Query("current") int current,
                                                      @Query("size") int size
    );

    /**
     * 新钱包查询奖励列表
     */
    @GET("api/ls-reward-month")
    Observable<BaseResp<RewardsDetailsBean>> rewardsMonthList(@Query("type") int type,
                                                              @Query("year") int year,
                                                              @Query("month") int month
    );

    /**
     * 新钱包奖励详情列表
     */
    @GET("api/ls-reward-record/page")
    Observable<BaseResp<RewardsListBean>> rewardsDetailsList(@Query("type") int type,
                                                             @Query("current") int current,
                                                             @Query("size") int size,
                                                             @Query("year") int year,
                                                             @Query("month") int month
    );


    /**
     * 新钱包奖励详情列表培养奖 培养奖
     */
    @GET("api/ls-reward-record/page/detail")
    Observable<BaseResp<RewardsTrainTopBean>> rewardsOtherList(@Query("type") int type,
                                                               @Query("current") int current,
                                                               @Query("size") int size,
                                                               @Query("year") int year,
                                                               @Query("month") int month
    );

    /**
     * 新钱包奖励详情列表培养奖 成长奖
     */
    @GET("api/ls-reward-record/page/growth")
    Observable<BaseResp<ReardsGrowthBean>> rewardsGrowthList(@Query("current") int current,
                                                             @Query("size") int size,
                                                             @Query("year") int year,
                                                             @Query("month") int month
    );

    /**
     * 新钱包奖励详情列表培养奖 挑战奖
     */
    @GET("api/ls-reward-record/page/challenge")
    Observable<BaseResp<RewardsChallengeBean>> rewardsChallengeList(@Query("current") int current,
                                                                    @Query("size") int size,
                                                                    @Query("year") int year,
                                                                    @Query("month") int month
    );



}
